#Dataframe  ---列--- Series

import pandas as pd

#分层索引
df1=pd.DataFrame({'语文':[11,68,16,54],'数学':[15,98,74,17]},index=[['一班','一班','一班','二班'],['张三','李四','王五','赵六']])
print(df1)

#分层索引的数据类型：pd.MultiIndex
#创建分层索引
#从元组
mi1=pd.MultiIndex.from_tuples([('一班','张三'),('一班','李四'),('一班','王五'),('一班','赵六')],
                              names=['班级','姓名'])
df2=pd.DataFrame({'语文':[11,68,16,54],'数学':[15,98,74,17]},index=mi1)
print(mi1)
print(df2)

#从数组
mi2=pd.MultiIndex.from_arrays([['一班','一班','一班','二班'],['张三','李四','王五','赵六']])
df3=pd.DataFrame({'语文':[11,68,16,54],'数学':[15,98,74,17]},index=mi2)
print(df3)

#从笛卡尔集，所有可能的组合
num=[1,2,3]
color=['green','red']
mi3=pd.MultiIndex.from_product([color,num])
print(mi3)
df4=pd.DataFrame({'语文':[11,68,16,54,55,45],'数学':[15,98,74,17,54,78]},index=mi3)
print(df4)

#分层索引操作(从外层索引到内层索引)
print(df3.loc['一班'])
print(df3.loc['一班','张三'])
print(df3.swaplevel()) #对换内外层索引



